package com.yssoft.mapper.core;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.yssoft.entity.core.TEnterprise;
import org.apache.ibatis.annotations.Param;

import com.yssoft.entity.core.TProducts;

import tk.mybatis.mapper.common.Mapper;

public interface TProductsMapper  extends Mapper<TProducts> {
	
	/**
	 * @方法名称: selectProPage
	 * @功能描述: 获取产品分页列表
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午5:21:32
	 * @param map
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> selectProPage(HashMap<String, Object> map);
	
	/**
	 * @方法名称: selectProPage
	 * @功能描述: 获取产品分页列表条数
	 * @作者: 洪丰
	 * @创建时间:2018年5月24日 下午1:36:43
	 * @param map
	 * @return Integer
	 */
	Integer selectProPageCount(HashMap<String, Object> map);
	
	/**
	 * @方法名称: selectSermigoodByProId
	 * @功能描述: 获取产品对应半成品
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午5:20:52
	 * @param proId
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> selectSermigoodByProId(@Param("id") Integer proId);
	
	/**
	 * @方法名称: selectOtherSermigoodByProId
	 * @功能描述: 获取不属于该产品的半成品信息
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午5:22:21
	 * @param proId
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> selectOtherSermigoodByProId(HashMap<String, Object> map);
	
	/**
	 * @方法名称: selectMaterialByProId
	 * @功能描述: 获取产品对应物料信息
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午5:26:17
	 * @param proId
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> selectMaterialByProId(@Param("id") Integer proId);
	
	/**
	 * @方法名称: selectOtherMaterialByProId
	 * @功能描述: 获取不属于该产品的物料信息
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午5:22:21
	 * @param proId
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> selectOtherMaterialByProId(HashMap<String, Object> map);
	
	/**
	 * @方法名称: deleteProductSermigood
	 * @功能描述: 删除产品和半成品中间表
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午7:12:33
	 * @param proId void
	 */
	void deleteProductSermigood(List<Map<String, Object>> ids);
	 
	/**
	 * @方法名称: insertProductSermigood
	 * @功能描述: 批量插入产品和半成品中间表
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午7:13:32
	 * @param ids void
	 */
	void insertProductSermigood(List<Map<String, Object>> ids);
	
	/**
	 * @方法名称: deleteProductMaterial
	 * @功能描述: 删除产品和物料中间表
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午7:13:47
	 * @param proId void
	 */
	void deleteProductMaterial(List<Map<String, Object>> ids);
	 
	/**
	 * @方法名称: insertProductMaterial
	 * @功能描述: 批量插入产品和物料中间表
	 * @作者: 洪丰
	 * @创建时间: 2018年4月28日 下午7:13:51
	 * @param ids void
	 */
	void insertProductMaterial(List<Map<String, Object>> ids);

	
    /**
     * @方法名称: queryProductDetail
     * @功能描述: 获取商品-销售订单用
     * @作者: 王永宁
     * @创建时间:2018年5月21日 上午9:09:38
     * @param id 商品类型id
     */
	List<Map<String, Object>> queryProductForSaleOrder(HashMap<String, Object> param);
	
	/**
	 * @方法名称: queryProcessByProId
	 * @功能描述: 获取产品对应工艺
	 * @作者: 王永宁
	 * @创建时间: 2018年5月24日 上午9:49:52
	 * @param proId
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> queryProcessByProId(@Param("id") Integer proId);
	
	/**
	 * @方法名称: queryOtherProcessByProId
	 * @功能描述: 获取不属于该产品的工艺信息
	 * @作者: 王永宁
	 * @创建时间: 2018年5月24日 上午9:50:21
	 * @param proId
	 * @return List<Map<String,Object>>
	 */
	List<Map<String, Object>> queryOtherProcessByProId(HashMap<String, Object> map);
	/**
	 * @方法名称: deleteProductProcess
	 * @功能描述: 删除产品和工艺中间表
	 * @作者: 王永宁
	 * @创建时间: 2018年5月24日 上午11:12:33
	 * @param proId void
	 */
	void deleteProductProcess(List<Map<String, Object>> ids);
	 
	/**
	 * @方法名称: updateProductProcess
	 * @功能描述: 批量插入产品和工艺中间表
	 * @作者: 王永宁
	 * @创建时间: 2018年5月4日 上午11:13:32
	 * @param ids void
	 */
	void updateProductProcess(List<Map<String, Object>> ids);
	
	/**
	 * @方法名称: saveSort
	 * @功能描述: 产品工艺管理排序
	 * @作者: 王永宁
	 * @创建时间: 2018年5月24日 下午3:10:46
	 */
	void saveSort(Map<String, Object> param);
	
	/**
	 * @方法名称: selectProInfoByProId
	 * @功能描述: 获取商品详细信息
	 * @作者: 洪丰
	 * @创建时间:2018年6月14日 上午9:30:51
	 * @param map
	 * @return Map<String,Object>
	 */
	Map<String, Object> selectProInfoByProId(@Param("batchId") Integer batchId);
	
 
	/**
	* @方法名: selectByEntList
	* @创建人: 陈翼东
	* @时间: 18-6-14 下午1:48
	* @参数: [entList]
	* @返回值: java.util.List<com.yssoft.entity.core.TProducts>
	* @说明: 查询多个企业的产品
	*/
    Map<String,Object> selectByEntListCount(@Param("entList") List<TEnterprise> entList);
    /**
	* @方法名: selectByEntList
	* @创建人: 陈翼东
	* @时间: 18-6-14 下午1:48
	* @参数: [entList]
	* @返回值: java.util.List<com.yssoft.entity.core.TProducts>
	* @说明: 查询多个企业的产品
	*/
    Map<String,Object> selectByEntListCurrentDateCount(Map<String,Object> param);
}